times 446 db 0 ; 填充剩余主引导记录(446B)余下部分 with 0
; 磁盘分区表
    DPT_Enable DB 0x80       ; 分区是否激活（0x80或0）
    DPT_StartHeadNumber DB 0 ; 开始磁头号
    DPT_StartSecCylinNumber DW 0x0101; 开始扇区号（低字节的低6位）和柱面号（其余10位，其中低位字节的高2位为其第9、10位）
    DPT_PartitionType DB 1; 分区类型（如：0x01 = FAT12、0x04/0x06/0x0E = FAT16、0x0B/0x0C = FAT32、0x07 = NTFS/ exFAT、0x05/0x0F = 扩展、0x83 = Linux、0xEE = GPT）
    DPT_endHeadNumber DB 1 ; 结束磁头号
    DPT_EndSecCylinNumber DW 0x9F3F ; 结束扇区号（低字节的低6位）和柱面号（其余10位，其中低位字节的高2位为其第9、10位）
    DPT_LBAvalue DD 126 ; 分区起始地址的LBA（逻辑块地址）值（扇区序号）
    DPT_PartitionSize DD 20034 ; 分区大小 (总扇区数)
times 510-($-$$) db 0   ; 用0填充剩下的扇区空间
db  55h, 0aah           ; 引导扇区结束标志

; 填充主引导扇区后面的125个扇区的空白
    times 512*125 db 0

; 第二个柱面
; 分区引导扇区(占1个扇区)
; ???
_SEG:
    org  07c00h                 ; 加载到 0:7C00 处
    ; 下面是跳转指令（占3B）：
    jmp short LABEL_START2      ; 跳转到代码起始处
    nop                         ; 这个nop（无操作指令）不可少（占1个字节位）
    ; 下面是OEM名串（占8B）：
    _BS_OEMName DB 'MyOS CXF' ; OEM String, 必须 8 个字节（不足补空格）
    ; 下面是 FAT12 磁盘的头（BPB+EBPB，占51B）
    _BPB_BytsPerSec DW 512      ; 每扇区字节数
    _BPB_SecPerClus DB 8        ; 每簇多少扇区
    _BPB_RsvdSecCnt DW 1        ; Boot记录占用多少扇区
    _BPB_NumFATs    DB 2        ; 共有多少 FAT 表
    _BPB_RootEntCnt DW 512      ; 根目录文件数最大值
    _BPB_TotSec16   DW 20160        ; 逻辑扇区总数
    _BPB_Media      DB 0xF8     ; 介质描述符
    _BPB_FATSz16    DW 8        ; 每FAT扇区数
    _BPB_SecPerTrk  DW 63       ; 每磁道扇区数
    _BPB_NumHeads   DW 2        ; 磁头数(盘面数)
    _BPB_HiddSec        DD 0        ; 隐藏扇区数
    _BPB_TotSec32   DD 0        ; BPB_TotSec16为0时这个值记录扇区数
    _BS_DrvNum      DB 0x80     ; 中断13h的驱动器号（硬/U盘时为0x80）
    _BS_Reserved1       DB 0        ; 未使用
    _BS_BootSig     DB 29h      ; 扩展引导标记 (29h)
    _BS_VolID       DD 15336017h; 卷序列号
    _BS_VolLab      DB 'Chen Xiaofe'; 卷标, 必须 11 个字节（不足补空格）
    _BS_FileSysType DB 'FAT12   '   ; 文件系统类型, 必须 8个字节（不足补空格）  
LABEL_START2:
    mov ax, cs      ; 置DS和ES=CS
    mov ds, ax
    mov es, ax
    call    DispStr2        ; 调用显示字符串例程
    jmp $           ; 无限循环
DispStr2:
    mov ah,13h      ; BIOS中断的功能号（显示字符串）
    mov al,1            ; 光标放到串尾
    mov bh,0        ; 页号=0
    mov bl,0ch      ; 字符颜色=黑底亮红字
    mov cx,18       ; 串长=16
    mov dx,0        ; 显示串的起始位置（0，0）：DH=行号、DL=列号
    mov bp,BootMsg2 ; ES:BP=串地址
    int 10h             ; 调用10H号显示中断
    ret             ; 从例程返回
BootMsg2:  db  "Hello, MyOS world!" ; 显示用字符串
times 510-($-_SEG) db 0 ; 用0填充剩下的扇区空间
db  55h, 0aah           ; 分区引导扇区结束标志

; 填充两个FAT表的头两个项（每个FAT占9个扇区）
    db 0f8h, 0ffh, 0ffh         ; 介质描述符（F8h）和Fh、结束簇标志项FFFh
    times 512*8-3       db  0   ; 用0填充FAT#1剩下的空间
    db 0f8h, 0ffh, 0ffh         ; 介质描述符（F8h）和Fh、结束簇标志项FFFh
    times 512*8-3       db  0   ; 用0填充FAT#2剩下的空间
; 根目录中的卷标条目
    db 'Chen Xiaofe'            ; 卷标, 必须 11 个字节（不足补空格）
    db 8                        ; 文件属性值（卷标条目的为08h）
    dw 0,0,0,0,0                ; 10个保留字节
    dw 75A0h,4A7Fh          ; 创建时间，设为2017年3月31日14时45分0秒
    dw 0                        ; 开始簇号（卷标条目的必需为0）
    dd 0                        ; 文件大小（也设为0）
